博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
项目阶段四:首页的分页
阅读量:3970 次
发布时间:2019-05-24

本文共 6002 字,大约阅读时间需要 20 分钟。

1、首页 index.jsp 的跳转

在这里插入图片描述

web下的index.jsp:

<%@ page contentType="text/html;charset=UTF-8" language="java" %><%--只负责请求转发--%>

复制一份原来的index.jsp到web下的pages下添加文件夹client下

在这里插入图片描述

/** * 首页的分页 * @param req * @param resp * @throws ServletException * @throws IOException */protected void page(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
//1 获取请求的参数 pageNo 和 pageSize int pageNo = WebUtils.parseInt(req.getParameter("pageNo"), 1); int pageSize = WebUtils.parseInt(req.getParameter("pageSize"), Page.PAGE_SIZE); //2 调用BookService.page(pageNo,pageSize):Page对象 Page
page = bookService.page(pageNo, pageSize); //3 保存Page对象到Request域中 req.setAttribute("page",page); //4 请求转发到pages/manager/book_manager.jsp页面 req.getRequestDispatcher("/pages/client/index.jsp").forward(req,resp);}

其web.xml配置文件:

ClientBookServlet
com.atguigu.web.ClientBookServlet
ClientBookServlet
/client/bookServlet

2、分页条的抽取

2.1、抽取分页条中请求地址为 url 变量

1.在 page 对象中添加 url 属性

// 分页条的请求地址private  String url;

2 在 Servlet 程序的 page 分页方法中设置 url 的分页请求地址

BookServlet.java:

Page
page = bookService.page(pageNo, pageSize);page.setUrl("manager/bookServlet?action=page");// //3 保存Page对象到Request域中req.setAttribute("page",page);ClientBookServlet.java://3 保存Page对象到Request域中req.setAttribute("page",page);

page_nav.jsp:

<%--大 于 首 页 , 才 显 示 --%>
首页
上一页
${i}
下一页末页

3、首页价格搜索

在这里插入图片描述

BookDao:

/**  * 查询价格在区间[min,max]里的总记录数  * @param min 最低价  * @param max 最高价  * @return 价格在区间[min,max]里的记录条数  */Integer queryForPageTotalCountByPrice(int min,int max); /**  * 查询价格在区间[min,max]里的数据信息  * @param begin 本页数据开始的索引  * @param pageSize 本页显示多少条数据  * @param min 最低价  * @param max 最高价  * @return 返回该查询结果的数据信息集合  */List
queryForPageItemsByPrice(int begin,int pageSize,int min,int max);

BookDaoImpl:

@Overridepublic Integer queryForPageTotalCountByPrice(int min, int max) {
String sql = "select count(*) from t_book where price between ? and ?"; Number count = (Number) queryForSingleValue(sql, min, max); return count.intValue();}@Overridepublic List
queryForPageItemsByPrice(int begin, int pageSize, int min, int max) {
String sql = "select `id`,`bookName`,`author`,`price`,`sales`,`stock`,`img_path` imgPath from t_book " + "where price between ? and ? order by price limit ?,?"; return queryForList(Book.class,sql,min,max,begin,pageSize);}

BookDaoTest:

@Testpublic void queryForPageTotalCountByPrice() {
System.out.println(bookDao.queryForPageTotalCountByPrice(0, 20));}@Testpublic void queryForPageItemsByPrice() {
List
books = bookDao.queryForPageItemsByPrice(0, 2, 0, 20); for (Book book : books) {
System.out.println(book); }}

BookService:

/** * 价格在区间[min,max]的page对象所含信息 * @param pageNo 第几页 * @param pageSize 一页显示几条数据 * @param min 最低价 * @param max 最高价 * @return */Page
pageByPrice(int pageNo,int pageSize,int min,int max);

BookServiceImpl:

@Overridepublic Page
pageByPrice(int pageNo, int pageSize, int min, int max) {
Page
page = new Page
(); // 设置每页显示的数量 page.setPageSize(pageSize); // 求总记录数 Integer pageTotalCount = bookDao.queryForPageTotalCountByPrice(min,max); // 设置总记录数 page.setPageTotalCount(pageTotalCount); Integer pageTotal = pageTotalCount / pageSize; if (pageTotalCount % pageSize > 0) {
pageTotal += 1; } // 设置总页码 page.setPageTotal(pageTotal); //设置当前页为第几页 page.setPageNo(pageNo); // 求当前页数据的开始索引 int begin = (page.getPageNo() - 1) * pageSize; // 求当前页数据 List
items = bookDao.queryForPageItemsByPrice(begin,pageSize,min,max); page.setItems(items); return page;}

BookServiceTest:

@Testpublic void pageByPrice() {
Page
bookPage = bookService.pageByPrice(1, 4, 0, 30); System.out.println(bookPage);}

ClientBookServlet:

protected void pageByPrice(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
//1 获取请求的参数 pageNo 和 pageSize int pageNo = WebUtils.parseInt(req.getParameter("pageNo"), 1); int pageSize = WebUtils.parseInt(req.getParameter("pageSize"), Page.PAGE_SIZE); int min = WebUtils.parseInt(req.getParameter("min"), 0); int max = WebUtils.parseInt(req.getParameter("max"), Integer.MAX_VALUE); //2 调用BookService.page(pageNo,pageSize):Page对象 Page
page = bookService.pageByPrice(pageNo,pageSize,min,max); //3 保存Page对象到Request域中 req.setAttribute("page",page); //4 请求转发到pages/manager/book_manager.jsp页面 req.getRequestDispatcher("/pages/client/index.jsp").forward(req,resp);}

index.jsp:

价格:
元 -

修改在区间[min,max]里显示出来数据的页码

protected void pageByPrice(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
//1 获取请求的参数 pageNo 和 pageSize,min,max int pageNo = WebUtils.parseInt(req.getParameter("pageNo"), 1); int pageSize = WebUtils.parseInt(req.getParameter("pageSize"), Page.PAGE_SIZE); int min = WebUtils.parseInt(req.getParameter("min"), 0); int max = WebUtils.parseInt(req.getParameter("max"), Integer.MAX_VALUE); //2 调用BookService.pageByPrice(pageNo,pageSize):Page对象 Page
page = bookService.pageByPrice(pageNo, pageSize, min, max); StringBuilder sb = new StringBuilder("client/bookServlet?action=pageByPrice"); // 如果最小价格的参数,追加到分页条的地址参数中 if(req.getParameter("min") != null){
sb.append("&min=").append(req.getParameter("min")); } // 如果最大价格的参数,追加到分页条的地址参数中 if(req.getParameter("max") != null){
sb.append("&max=").append(req.getParameter("max")); } page.setUrl(sb.toString()); //3 保存Page对象到Request域中 req.setAttribute("page",page); //4 请求转发到pages/manager/book_manager.jsp页面 req.getRequestDispatcher("/pages/client/index.jsp").forward(req,resp);}

在这里插入图片描述

转载地址:http://zquki.baihongyu.com/

你可能感兴趣的文章
所谓的进步和提升,就是完成认知升级
查看>>
为什么读了很多书,却学不到什么东西?
查看>>
长文干货:如何轻松应对工作中最棘手的13种场景?
查看>>
如何用好碎片化时间,让思维更有效率?
查看>>
No.174 - LeetCode1305 - 合并两个搜索树
查看>>
No.175 - LeetCode1306
查看>>
No.176 - LeetCode1309
查看>>
No.182 - LeetCode1325 - C指针的魅力
查看>>
mysql:sql alter database修改数据库字符集
查看>>
mysql:sql truncate (清除表数据)
查看>>
yuv to rgb 转换失败呀。天呀。谁来帮帮我呀。
查看>>
yuv420 format
查看>>
yuv420 还原为RGB图像
查看>>
LED恒流驱动芯片
查看>>
驱动TFT要SDRAM做为显示缓存
查看>>
使用file查看可执行文件的平台性,x86 or arm ?
查看>>
qt5 everywhere 编译summary
查看>>
qt 创建异形窗体
查看>>
简单Linux C线程池
查看>>
内存池
查看>>